Search

大家只要好好觀察、紀錄或感受一下,當你有個想法想要嘗試看看,或是從 stackoverflow, G...

  • Share this:

大家只要好好觀察、紀錄或感受一下,當你有個想法想要嘗試看看,或是從 stackoverflow, Google 找到了某個 sample code, 解決方案,從有想法到實現完成,並確認執行是否正確、是否符合你的期待,你需要花多少時間?

這些時間都只是在「實現想法」而已,如果思考是一條 thread, 這一條 thread 就只能等到你 實現的那一條 thread 完成任務,才能再切回來,繼續往下想,或是想其他的解決方案。

思考這條 thread 等待越久,context switch 成本就越高,被 interrupt 導致你原本腦袋裡面的 memory 就會被刷到 swap disk 空間,到時要拉回來就更容易漏、要花更多時間恢復。

從有想法到驗證想法是否可行時間越長,你能嘗試的解決方案就越少。在現代的軟體開發,「剛好才是最好」,而所謂的剛好,通常就是從好幾種解決方案裡面挑出來一個「最合適解」,要嘗試好幾種解決方案是很花時間的。

而你嘗試過的解決方案越多,學到的東西就越多,不同 context 你的 option 就會比其他人多很多可以選。

大家一直拿來當笑話的「出張嘴寫程式比較快」,有沒有想過想法到哪,程式碼就長到哪的境界,這是個值得追求到境界。

當能最小化「實現想法、驗證想法」需要花費的時間時,你就更有機會與時間去強化、改善你思考的速度、廣度、深度,這樣才會是一個正向的增強迴圈。

By the way, ATDD/TDD 就是在縮短驗證想法的最有力方式,而且是「持續平緩驗證想法所需要的時間」,不會因為功能越來越多,系統越來越大而幾何指數增加驗證時間。

時間是最可貴的資源,人類的大腦跟思考運作,是看到東西就會產生更多的 feedback 刺激,幫助你產生更深入、有效的想法。這中間會有不斷不斷的 IPO(input/process/output, 加上 feedback),來讓你的軟體更接近你理想的狀態。

就像很多基本功深厚的開發人員,他們寫完自己的程式碼之後,就很自然地進行多次 code review 跟 refactor (沒有測試保護,沒法安心跟迅速 重構設計的),有程式碼出來,才會知道怎麼調整設計更好、更簡單,這些東西很多是無法在一開始就想得到的。

你這次想不到,但這次學到的東西下次就可以用,但下次仍然會有你想不到的東西,等到你做出來才會想得到,這就是軟體開發的宿命,也是正常現象。我們能運用這種自然現象,來不斷增強自己的功力與學習速度。

結論,這功夫練好,你省下來的時間,就會讓你「學什麼都快」。

不然我也沒法子在短時間裡面,能應用那麼多不一樣的 IDE, 以不一樣的程式語言特性來設計上課的內容。

因為我每次只需要去嘗試不一樣的地方,而我試錯調整的速度是別人的好幾倍快,自然上手快,自然面對一個問題,不同的限制跟考量,口袋都有好幾種解決方案等著。

#極速開發,讓你能省下來更多時間進行學習跟改善,就能賺到更多時間,接著把時間換回來巨大的商業價值。

想像一下你現在一年多少錢,換算下來每個時間單位報酬是多少錢,而現在省下來的時間,放到十年後的你,這些時間單位所換回來的單位報酬有多高。

我是不知道是不是一體適用,但我現在的時間報酬(以年來看更準一點),是我第一份工作的20倍以上。

越晚學會,你能賺到的時間單位就越少。(當然啦,如果省下來的時間沒有好好運用,那錢也不會從天上掉下來,遊民每天也有很多時間的)


Tags:

About author
我是 Joey Chen,闖蕩江湖的稱號是 91,熱血點火師,專門燃起大家心裡面的熱情與初衷。 目前為 Odd-e Taiwan 的負責人,同時也是 JetBrains 在台灣的培訓夥伴,至今也仍是熱愛學習與享受各種程式語言之美的 programmer。 身為敏捷教練,擅長 Agile、Scrum、LeSS 等敏捷文化與協作框架的落實與導入,如何讓大家 being agile 而不是 doing agile。同時喜歡結合各家所長,例如 Lean, Kanban 等,重點是持續改善、解決問題、端出成果,而不執著於某種特定方法論或框架。 身為技術教練,我也是極限編程(extreme programming)的狂熱者,我擅長用這些技術與工程實踐來提昇產品的品質、團隊的生產力、降低營運風險,因應市場與公司的商業目標,讓團隊能具有高適應與反應能力的基礎建設。例如 實例化需求、ATDD、BDD、TDD、重構、自動化單元測試/整合測試/驗收測試、CI/CD、code review、pair programming、mob-programming 等等。 同時,我也是推崇 極速開發 的 developer,追求從想法到產品程式碼的完成,中間的時間差能趨近於零,也就是劍隨心轉,想到哪,程式碼就長到哪的境界。從想法到實現中間的等待,其實在實務上佔了很大的 context switch 成本,如果能讓這段時間縮到最短,就能比其他人多嘗試更多種解決方案,進而挑選出最剛好的方案。 同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。 擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。 同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》。 如果想跟我即時互動,歡迎直接私訊或 email 至 [email protected]
請參考:https://tdd.best/about/
View all posts